home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 26 / AACD 26.iso / AACD / Programming / AllPlaton / Unsorted / Boing98.AMOS / Boing98.amosSourceCode
Encoding:
AMOS Source Code  |  1998-08-25  |  3.1 KB  |  132 lines

  1. Goto BOING
  2. NUMBALLS=3
  3. Dim B(NUMBALLS,6)
  4. Screen Open 0,256,256,2,0
  5. Curs Off : Flash Off : Paper 0 : Pen 1 : Cls 
  6. Palette 0,$FFF
  7. Wait Vbl : Limit Mouse 
  8. Double Buffer 
  9. Autoback 0
  10. For A=1 To NUMBALLS
  11.   B(A,0)=Rnd(65535)
  12.   B(A,1)=Rnd(32768)
  13.   B(A,2)=Rnd(1024)-512
  14.   B(A,3)=Rnd(1024)-512
  15.   B(A,4)=Rnd(32)+8
  16.   B(A,5)=B(A,4)*B(A,4)
  17.   B(A,6)=0
  18. Next 
  19. Do 
  20.    Extension_8_121C 0,0
  21. '  B(1,0)=X Screen(X Mouse)*256
  22. '  B(1,1)=Y Screen(Y Mouse)*256
  23.   For A=1 To NUMBALLS
  24.     Add B(A,3),3
  25.     If B(A,1)+B(A,4)*256>65536 Then B(A,3)=-B(A,3)
  26.     Add B(A,0),B(A,2)
  27.     Add B(A,1),B(A,3)
  28.     For AA=1 To A
  29.       If AA<>A
  30.         DX= Extension_8_093A(B(A,0)-B(AA,0),8)
  31.         DY= Extension_8_093A(B(A,1)-B(AA,1),8)
  32.         R=B(A,4)+B(AA,4)
  33.         R2=R*R
  34.         D2=DX*DX+DY*DY
  35.         If D2<R2
  36.           If(B(A,6) and Extension_8_04F8(AA))=0 and(B(AA,6) and Extension_8_04F8(A))=0
  37.             B(A,2)=(B(A,2)*Abs(DY)-B(A,2)*(Abs(DX)+32))/R
  38.             B(A,3)=(B(A,3)*Abs(DX)-B(A,3)*(Abs(DY)+32))/R
  39.             B(AA,2)=(B(AA,2)*Abs(DY)-B(AA,2)*(Abs(DX)+32))/R
  40.             B(AA,3)=(B(AA,3)*Abs(DX)-B(AA,3)*(Abs(DY)+32))/R
  41.             Colour 0,$F
  42.             B(A,6)=B(A,6) or Extension_8_04F8(AA)
  43.             B(AA,6)=B(AA,6) or Extension_8_04F8(A)
  44.           End If 
  45.         Else 
  46.           Colour 0,0
  47.           B(A,6)=B(A,6) and($FFFF- Extension_8_04F8(AA))
  48.           B(AA,6)=B(AA,6) and($FFFF- Extension_8_04F8(A))
  49.         End If 
  50.       End If 
  51.     Next 
  52.  
  53.     B(A,0)=B(A,0) and $FFFF
  54.     B(A,1)=B(A,1) and $FFFF
  55.     Circle B(A,0)/256,B(A,1)/256,B(A,4)
  56.   Next 
  57.   Screen Swap : Wait Vbl 
  58. Loop 
  59. End 
  60. BOING:
  61. Screen Open 0,320,256,32,0
  62. Curs Off : Flash Off : Pen 15 : Paper 0 : Cls 
  63.  Extension_8_1722 0,$0 To 15,$FFF
  64.  Extension_8_1722 16,$0 To 31,$F44
  65. BX=128 : BY=128
  66. LX=96 : LY=96
  67. R=30
  68. TX=R*2
  69. Do 
  70.    Extension_8_0388 LX,LY,Rnd(31)
  71.   HLX=((BX-LX)*R)/128
  72.   HLY=((BY-LY)*R)/128
  73.   R2=R*R
  74.   For YY=0 To R
  75.     For XX=0 To R
  76.       D2=XX*XX+YY*YY
  77.       If D2<R2
  78.         PX=-YY : PY=XX : Gosub SETDOTQPERS
  79.         PX=YY : PY=XX : Gosub SETDOTQPERS
  80.         PX=YY : PY=-XX : Gosub SETDOTQPERS
  81.         PX=-YY : PY=-XX : Gosub SETDOTQPERS
  82.       End If 
  83.     Next 
  84.   Next 
  85.   Inc TX
  86. '  Add TX,1,R*8 To R*9-1 
  87. '  Add BX,-Qcos(TX*R+BX,4) 
  88. '  Add BY,Qsin(TX*R+BY-BX,4) 
  89. Loop 
  90. SETDOTQPERS:
  91.   DX=PX+HLX : DY=PY+HLY
  92.   L2=DX*DX+DY*DY
  93.  
  94.   GX=((PX*R2)*4)/(R2*2-D2)
  95.   GY=((PY*R2)*4)/(R2*2-D2)
  96.  
  97. '  GX=((PX*R2)*4)/(1024+R2-D2) 
  98. '  GY=((PY*R2)*4)/(1024+R2-D2) 
  99.  
  100.   B=(((GX+TX)/R)+(GY+TX)/R) and 1
  101.  
  102. '  DX=(GX+TX)+(((GY+TX)/16) and 1)*16
  103. '  B=(DX/16) and 1 
  104.  
  105.    Extension_8_0388 PX+BX,PY+BY,Max(15-((L2*8)/R2),0)+B*16
  106. Return 
  107. SETDOTPERS:
  108.   DX=PX+HLX : DY=PY+HLY
  109.   L2=DX*DX+DY*DY
  110.   GX=((PX*R2)*2)/(1024+R2-D2)
  111.   GY=((PY*R2)*2)/(1024+R2-D2)
  112.   DX=(GX+TX)+(GY+TX)*2
  113.   DY=(GY+TX)-(GX+TX)*2
  114.   B=Abs((DX/R)-(DY/R)) and 1
  115.    Extension_8_0388 PX+BX,PY+BY,Max(15-((L2*8)/R2),0)+B*16
  116. Return 
  117. SETDOT:
  118.   DX=PX+HLX : DY=PY+HLY
  119.   L2=DX*DX+DY*DY
  120.  
  121.   B=(((PX+TX)/R)+(PY+TX)/R) and 1
  122.  
  123.    Extension_8_0388 PX+BX,PY+BY,Max(15-((L2*8)/R2),0)+B*16
  124. Return 
  125. SETDOTOLD:
  126.   DX=PX+HLX : DY=PY+HLY
  127.   L= Extension_8_1366(DX*DX+DY*DY)
  128.   DX=(PX+TX)+(PY+TX)*2
  129.   DY=(PY+TX)-(PX+TX)*2
  130.   B=(Abs(((DX*2)/R)-((DY*2)/R))) and 1
  131.    Extension_8_0388 PX+BX,PY+BY,Max(15-((L*8)/R),0)+B*16
  132. Return